
import java.io.*;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Vector;

/**
 *
 * @author marduke
 */
public class Nodo {

    int DEFAULT = 1800;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        int puerto = 2004;
        String maquinas = "";
        String archivoTraza = "";
        String directorio = "";
        Vector<String> vectorMaquinas = new Vector();
        File archivos[] = new File[1];
        Vector<String> vectorArchivos = new Vector();
        BufferedWriter traza;

        if (args.length != 8) {
            System.out.println("Error en los argumentos.\n "
                    + "Uso: \n"
                    + "nodo -p <puerto> -f <maquinas> -l <archivoTrazas> -d "
                    + "<directorio> \nDonde:  \n"
                    + "<puerto>: es el puerto por el cual estará escuchando el"
                    + " servidor.\n <maquinas>: es el nombre dela rchivo donde"
                    + " estaran especificados los nombre o direcciones IP de "
                    + "los nodos vecinos.\n"
                    + "<archivoTrazas>: nombre del archivo de texto donde el "
                    + "servidor escribirá la información sobre las operaciones "
                    + "realizadas: consultas recibidas, de quien"
                    + " las recibi,o, peticion de archivos.\n"
                    + "<directorio>: nombre del directoria donde estaran los "
                    + "archivos JPG y XML que representan las fotos, como se "
                    + "explicó anteriormente.");
        } else {

            for (int i = 0; i < args.length; i = i + 2) {
                if (args[i].compareTo("-p") == 0) {
                    puerto = Integer.parseInt(args[i + 1]);
                } else if (args[i].compareTo("-f") == 0) {
                    maquinas = args[i + 1];
                } else if (args[i].compareTo("-l") == 0) {
                    archivoTraza = args[i + 1];
                } else if (args[i].compareTo("-d") == 0) {
                    directorio = args[i + 1];
                } else {
                    System.out.println("Argumento inválido " + args[i]);
                    System.exit(-1);
                }
            }

            try {
                Scanner vecinos = new Scanner(new File(maquinas));
                while (vecinos.hasNext()) {
                    vectorMaquinas.add(vecinos.next());
                }
            } catch (FileNotFoundException fileExepction) {
                System.out.println("El archivo de maquinas no existe.");
            }

          


            try {
                File dirFile = new File(directorio);
                if (dirFile.exists()) {
                    if (dirFile.isDirectory()) {
                       // System.out.println("Es un directorio");
                        archivos = dirFile.listFiles();
                    } else {
                        //System.out.println("No es un directorio");
                    }
                } else {
                    dirFile.mkdir();
                    archivos = dirFile.listFiles();
                }

                for (int i = 0; i < archivos.length; i++) {
                    File file = archivos[i];
                    String nFile = file.getName();
                    String hola[];
                    if (nFile.contains(".xml")) {
                        hola = nFile.split(".xml");
                        vectorArchivos.add(hola[0]);
                    }
                }

//                for (Iterator<String> it = vectorArchivos.iterator();
//                        it.hasNext();) {
//                    String string = it.next();
//                    System.out.println(string);
//                }
            } catch (Exception e) {
            }

            Thread hilo = new Thread(new ServidorNodo(vectorMaquinas,
                    vectorArchivos, directorio,archivoTraza));
            hilo.start();


            Servidor servidor = new Servidor(puerto, vectorMaquinas,
                    vectorArchivos, directorio,archivoTraza);



            while (true) {
                servidor.run();
            }
        }
    }


}
